// 引入axios的核心库以及一些规则定义方法
import axios, { AxiosInstance, AxiosResponse, AxiosRequestConfig } from 'axios'

//封装配置方法
let config = {
    //基础地址
    baseURL: '/api'
}
//封装一个请求类 这个类中包含了拦截器，包含了 get/post方法
class HttpRequest {
    //创建一个http的属性 代表的就是axios
    http: AxiosInstance
    constructor(config: AxiosRequestConfig) {
        // 重新实例化了一个axios
        this.http = axios.create(config)
        //请求拦截器
        this.http.interceptors.request.use(req => {
            //req 代表的就是请求参数
            //进行token的验证
            return req
        })
        this.http.interceptors.response.use(res => {
            return res
        })
    }
    // 封装get请求
    get<T>(url: string, params?: object): Promise<T> {
        return this.http.get(url, { params })
    }
    // 封装post请求
    post<T>(url: string, data?: object): Promise<T> {
        return this.http.post(url, data)
    }
}

export default new HttpRequest(config)